﻿//
// ParallelGrep
//
// Copyright (C) 2011 - Tatsuya Niioka
//
using System.Configuration;

namespace ParallelGrep.Configuration
{
    /// <summary>
    /// 構成ハンドラー
    /// </summary>
    public class ConfigHandler : ConfigurationSection
    {
        #region Constructor
        /// <summary>
        /// 新しい<see cref="ConfigHandler"/>クラスを生成します。
        /// </summary>
        public ConfigHandler()
        {
        }
        #endregion

        #region Cultures
        /// <summary>
        /// 言語を取得または設定します。
        /// </summary>
        [ConfigurationProperty("cultures")]
        public string Cultures
        {
            get
            {
                return (string)base["cultures"];
            }
            set
            {
                base["cultures"] = value;
            }
        }
        #endregion

        #region Culture
        /// <summary>
        /// 言語を取得または設定します。
        /// </summary>
        [ConfigurationProperty("culture")]
        public string Culture
        {
            get
            {
                return (string)base["culture"];
            }
            set
            {
                base["culture"] = value;
            }
        }
        #endregion

        #region ScaleSize
        /// <summary>
        /// スケールサイズを取得または設定します。
        /// </summary>
        [ConfigurationProperty("scaleSize")]
        public double ScaleSize
        {
            get
            {
                return (double)base["scaleSize"];
            }
            set
            {
                base["scaleSize"] = value;
            }
        }
        #endregion

        #region IsDescriptionVisible
        /// <summary>
        /// 概要表示状態を取得または設定します。
        /// </summary>
        [ConfigurationProperty("isDescriptionVisible")]
        public bool IsDescriptionVisible
        {
            get
            {
                return (bool)base["isDescriptionVisible"];
            }
            set
            {
                base["isDescriptionVisible"] = value;
            }
        }
        #endregion

        #region IsOutputVisible
        /// <summary>
        /// 出力先表示状態を取得または設定します。
        /// </summary>
        [ConfigurationProperty("isOutputVisible")]
        public bool IsOutputVisible
        {
            get
            {
                return (bool)base["isOutputVisible"];
            }
            set
            {
                base["isOutputVisible"] = value;
            }
        }
        #endregion

        #region Paths
        /// <summary>
        /// 入力フォルダ一覧を取得または設定します。
        /// </summary>
        [ConfigurationProperty("paths", IsDefaultCollection = false)]
        public ConfigCollection Paths
        {
            get
            {
                return (ConfigCollection)base["paths"];
            }
        }
        #endregion

        #region SearchValues
        /// <summary>
        /// 検索文字列一覧を取得または設定します。
        /// </summary>
        [ConfigurationProperty("searchValues", IsDefaultCollection = false)]
        public ConfigCollection SearchValues
        {
            get
            {
                return (ConfigCollection)base["searchValues"];
            }
        }
        #endregion

        #region ReplacementValues
        /// <summary>
        /// 置換文字列一覧を取得または設定します。
        /// </summary>
        [ConfigurationProperty("replacementValues", IsDefaultCollection = false)]
        public ConfigCollection ReplacementValues
        {
            get
            {
                return (ConfigCollection)base["replacementValues"];
            }
        }
        #endregion

        #region SearchPatterns
        /// <summary>
        /// 検索パターン一覧を取得または設定します。
        /// </summary>
        [ConfigurationProperty("searchPatterns", IsDefaultCollection = false)]
        public ConfigCollection SearchPatterns
        {
            get
            {
                return (ConfigCollection)base["searchPatterns"];
            }
        }
        #endregion

        #region RecentFiles
        /// <summary>
        /// 最近使ったファイル一覧を取得または設定します。
        /// </summary>
        [ConfigurationProperty("recentFiles", IsDefaultCollection = false)]
        public ConfigCollection RecentFiles
        {
            get
            {
                return (ConfigCollection)base["recentFiles"];
            }
        }
        #endregion

    }
}
